/*
 * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */

package com.sun.corba.se.impl.orbutil.fsm;

import com.sun.corba.se.spi.orbutil.fsm.Guard;
import com.sun.corba.se.spi.orbutil.fsm.GuardBase;
import com.sun.corba.se.spi.orbutil.fsm.Input;
import com.sun.corba.se.spi.orbutil.fsm.Action;
import com.sun.corba.se.spi.orbutil.fsm.State;
import com.sun.corba.se.spi.orbutil.fsm.FSM;

public class GuardedAction {
    private static Guard trueGuard = new GuardBase("true") {
        public Guard.Result evaluate(FSM fsm, Input in) {
            return Guard.Result.ENABLED;
        }
    };

    private Guard guard;
    private Action action;
    private State nextState;

    public GuardedAction(Action action, State nextState) {
        this.guard = trueGuard;
        this.action = action;
        this.nextState = nextState;
    }

    public GuardedAction(Guard guard, Action action, State nextState) {
        this.guard = guard;
        this.action = action;
        this.nextState = nextState;
    }

    public String toString() {
        return "GuardedAction[action=" + action + " guard=" + guard + " nextState=" + nextState + "]";
    }

    public Action getAction() {
        return action;
    }

    public Guard getGuard() {
        return guard;
    }

    public State getNextState() {
        return nextState;
    }
}
